package cn.lrwjz.androidguide.ui.exmple;

import android.app.Activity;
import android.app.ComponentCaller;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import com.google.android.material.appbar.MaterialToolbar;

import java.io.Serializable;

import cn.lrwjz.androidguide.R;
import cn.lrwjz.androidguide.model.User;
import cn.lrwjz.androidguide.ui.ChipActivity;

/**
 * Activity生命周期
 * Intent页面跳转
 *
 * Activity启动模式：AndroidManifest.xml 中 activity 标签下设置 launchMode 属性
 *  默认启动模式 standard
 *  栈内复用模式 singleTask：如果栈内存在该 Activity 实例，则复用该实例，并清空该 Activity 之上的所有 Activity
 *  栈顶复用模式 singleTop：如果栈顶存在该 Activity 实例，则复用该实例，并调用 onNewIntent() 方法
 *  全局唯一模式 singleInstance： 该 Activity 独占一个任务栈
 *
 */
public class IntentActivity extends AppCompatActivity {

    private ActivityResultLauncher<Intent> activityResultLauncher;

    private static final String TAG = "IntentActivity";

    // Activity 创建活动。此时会把页面布局加载进内存，进入了初始状态。
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_intent);

        Log.d(TAG, "onCreate");

        // 设置工具栏
        MaterialToolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setTitle("Intent 示例");
        }


        findViewById(R.id.btn_custom).setOnClickListener(v -> {
            // 自定义页面跳转
            Intent intent = new Intent(IntentActivity.this, IntentTwoActivity.class);
            // 传递参数
            intent.putExtra("name", "张三");
            // 打包传递参数
            Bundle bundle = new Bundle();
            bundle.putInt("age", 18);
            bundle.putString("sex", "男");
            intent.putExtras(bundle);

            // 传递对象参数
            User user = new User("张三", "admin@qq.com", "13701111111");
            // 需要序列化对象
            intent.putExtra("user", (Serializable) user);

//            startActivity(intent);
            startActivityForResult(intent, 0);
        });

        findViewById(R.id.btn_baidu).setOnClickListener(v -> {
            Intent intent = new Intent();
//        intent.setAction("android.intent.action.VIEW");
            intent.setAction(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("http://www.baidu.com"));
            startActivity(intent);
        });

        findViewById(R.id.btn_call).setOnClickListener(v -> {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_DIAL);
            intent.setData(Uri.parse("tel:12312341234"));
            startActivity(intent);
        });

        findViewById(R.id.btn_sms).setOnClickListener(v -> {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_SENDTO);
            intent.setData(Uri.parse("smsto:124"));
            intent.putExtra("sms_body", "你好啊，这是给你的短信");
            startActivity(intent);
        });

        findViewById(R.id.btn_camera).setOnClickListener(v -> {
            Intent intent = new Intent();
            intent.setAction("android.media.action.IMAGE_CAPTURE");
            startActivity(intent);
        });

        findViewById(R.id.btn_photo).setOnClickListener(v -> {
            Intent intent = new Intent();
            intent.setAction("android.intent.action.PICK");
            intent.setType("image/*");
            startActivity(intent);
        });

    }


    // 获取回传参数
    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data, @NonNull ComponentCaller caller) {
        super.onActivityResult(requestCode, resultCode, data, caller);
        if (requestCode == 0 && resultCode == RESULT_OK) {
            // 从 data 中获取返回的数据
            assert data != null;
            String res = data.getStringExtra("result");
            Toast.makeText(IntentActivity.this, res, Toast.LENGTH_SHORT).show();
        }
    }



    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }


    // 开启活动。页面可见，进入了就绪状态。
    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "onStart");
    }

    // 恢复活动。此时活动页面进入活跃状态，能够与用户正常交互，例如允许响应用户的点击动作、允许用户输入文字等
    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, "onResume");
    }

    // 暂停活动。此时活动页面进入暂停状态（也就是退回就绪状态），无法与用户正常交互
    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG, "onPause");
    }

    // 停止活动。页面不可见
    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG, "onStop");
    }

    // 销毁活动。此时回收活动占用的系统资源，把页面从内存中清除掉
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy");
    }
}